'''
面向对象-继承:
    1. 继承的概念：
        1. 继承：子类继承父类的属性和方法
        2. 子类：子类也称为派生类
        3. 父类：父类也称为基类
        4. 继承的好处：
            1. 子类可以继承父类的属性和方法
            2. 子类可以重写父类的属性和方法
            3. 子类可以添加新的属性和方法
        5. 继承的语法：
            class 子类名(父类名):
                pass

'''
#父类
class Person:
    def __init__(self, name, age):
        self.name = name  # 公有成员
        self.age = age  # 私有成员
    def eat(self):  # 公有方法
        print('eat')
    def sleep(self):  # 私有方法
        print('sleep')
    def smoke(self):  # 公有方法
        print('smoke')
#子类
class animal():  # 子类继承父类的属性和方法,0
    pass
#子类
class Student(Person):  # 子类继承父类的属性和方法,0  
    
   def smoke(self):  # 重写父类的方法
       print('smoking...')
#一个子类可以继承多个父类，用逗号隔开
class Teacher(Person,animal):  # 子类继承父类的属性和方法,0


#==================
#创父类对象
 p1 = Person('张三', 18)

 print(p1.name,p1.age)  # 张三
 p1.eat()  # eat
 p1.sleep()  # AttributeError: 'Person' object has no attribute '__sleep'
 p1.smoke()  # smoke
 #创子类对象
 s1 = Student('李四', 20)
 print(s1.name,s1.age)  # 李四 20
 s1.eat()  # eat
 s1.sleep()  #sleep
 s1.smoke()  # smoking...